package com.ruoyi.broadcast.service.impl;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; //添加
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.broadcast.mapper.GbkzMapper;
import com.ruoyi.broadcast.domain.Gbkz;
import com.ruoyi.broadcast.service.IGbkzService;

/**
 * 广播控制Service业务层处理
 *
 * @author hcc
 * @date 2024-12-01
 */
@Service
public class GbkzServiceImpl extends ServiceImpl<GbkzMapper, Gbkz> implements IGbkzService //修改
{
    @Autowired
    private GbkzMapper gbkzMapper;

    /**
     * 查询广播控制
     *
     * @param broadcastControlId 广播控制主键
     * @return 广播控制
     */
    @Override
    public Gbkz selectGbkzByBroadcastControlId(String broadcastControlId) {
        return gbkzMapper.selectGbkzByBroadcastControlId(broadcastControlId);
    }

    /**
     * 查询广播控制列表
     *
     * @param gbkz 广播控制
     * @return 广播控制
     */
    @Override
    public List<Gbkz> selectGbkzList(Gbkz gbkz) {
        return gbkzMapper.selectGbkzList(gbkz);
    }

    /**
     * 新增广播控制
     *
     * @param gbkz 广播控制
     * @return 结果
     */
    // TODO
    @Override
    public int insertGbkz(Gbkz gbkz) {
        gbkz.setMineCode("1001");
        gbkz.setDataTime(new Date());
        gbkz.setSystemType("5");
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
            String formattedLine = formatGbkz(gbkz);
            writer.write(formattedLine);
            writer.newLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return gbkzMapper.insertGbkz(gbkz);
    }

    /**
     * 修改广播控制
     *
     * @param gbkz 广播控制
     * @return 结果
     */
    @Override
    public int updateGbkz(Gbkz gbkz) {
        return gbkzMapper.updateGbkz(gbkz);
    }

    /**
     * 批量删除广播控制
     *
     * @param broadcastControlIds 需要删除的广播控制主键
     * @return 结果
     */
    @Override
    public int deleteGbkzByBroadcastControlIds(String[] broadcastControlIds) {
        return gbkzMapper.deleteGbkzByBroadcastControlIds(broadcastControlIds);
    }

    /**
     * 删除广播控制信息
     *
     * @param broadcastControlId 广播控制主键
     * @return 结果
     */
    @Override
    public int deleteGbkzByBroadcastControlId(String broadcastControlId) {
        return gbkzMapper.deleteGbkzByBroadcastControlId(broadcastControlId);
    }

    private static String formatGbkz(Gbkz gbkz) {
        return String.format("%s;%s;;%s;%s;%s",
                gbkz.getBroadcastControlId(),
                gbkz.getMineCode(),
                gbkz.getSystemType(),
                gbkz.getStationCode(), // 话站编号，使用|分割
                gbkz.getDataRecords(), // 数据记录数
                gbkz.getBroadcastText() // 广播内容
        );
    }
}
